import axios, { InternalAxiosRequestConfig, AxiosResponse } from 'axios';

// 响应数据通用接口
if (import.meta.env.VITE_BASE_URL) {
  const baseURL:string = import.meta.env.VITE_BASE_URL;
  if(import.meta.env.MODE === 'development') {
    axios.defaults.baseURL = baseURL;
  }
}


// 请求拦截器
axios.interceptors.request.use(
  (config: InternalAxiosRequestConfig) => {
    // 这里可以添加token等认证信息
    return config;
  },
  (error) => {
    console.error('请求错误:', error);
    return Promise.reject(error);
  }
);

axios.interceptors.response.use(
  (response: AxiosResponse<any>) => {
    //  如果需要直接返回
    if(response.config.needFullResponse === true){
      return response;
    }
    // 如果是blob响应，直接返回原始blob对象
    if (
      response.config.responseType === 'blob'
    ) {
      return response.data;
    }

    // 如果需要解析响应数据，默认解析
    if(response.config.needApiResponse === true){
      return response.data;
    }
    const res = response.data;
    // if the custom code is not 20000, it is judged as an error.
    if (res.ret !== 0) {
      console.error('响应错误:', res);
      return Promise.reject(new Error(res.msg || 'Error'));
    }
    return res.data;
  },
  (error) => {
    console.error('响应错误:', error);
    // 这里可以统一处理错误
    return Promise.reject(error);
  }
);

